home *** CD-ROM | disk | FTP | other *** search
- MODULE Control; (* by fred brooks logictek san diego ca PD software *)
-
- IMPORT GEMVDIbase, GEMAESbase, AESMenus, AESForms, AESObjects, AESEvents,
- AESResources ;
-
- FROM AESGraphics IMPORT GrafMouse;
-
- FROM AESObjects IMPORT ObjectDraw;
-
- FROM MYLIB IMPORT InitResource,Terminate,
- DeselectObject,
- dTree,MenuTree,x,y,w,h,InitWindow,CloseWindow;
-
- FROM SYSTEM IMPORT ADR,ADDRESS,CODE,TSIZE;
-
- FROM Strings IMPORT String, Concat;
-
- FROM XBIOS IMPORT SuperExec;
-
- FROM BIOS IMPORT DriveSet;
-
- FROM GEMDOS IMPORT ExecMode,Exec,Open,Close,Read,Write,Create;
-
- FROM Streams IMPORT StreamKinds;
-
- FROM M2Conversions IMPORT ConvertToCardinal;
-
- TYPE
- SequenceNr = [0..1];
- control = RECORD
- magic : LONGCARD;
- USER : CARDINAL;
- REMOTEUSER : CARDINAL;
- reset : BOOLEAN;
- networkactive : BOOLEAN;
- remotedrive : CARDINAL;
- drivemap : DriveSet;
- nextframetosend : ARRAY [0..15] OF SequenceNr;
- frameexpected : ARRAY [0..15] OF SequenceNr;
- sendreset : BOOLEAN;
- END;
-
- consave = RECORD
- magic : LONGCARD;
- USER : CARDINAL;
- REMOTEUSER : CARDINAL;
- reset : BOOLEAN;
- networkactive : BOOLEAN;
- END;
- CONST
- resourcefilename = "ANETMIDI.RSC" ;
- RTS = 04E75H ;
-
- CONST
- ABOUT = 1 ;
- ABOUTOK = 1 ;
- MENU = 0 ;
- DESK = 3 ;
- MODE = 5 ;
- FILE = 4 ;
- USERID = 6 ;
- OPTIONS = 7 ;
- SEQ = 8 ;
- ABOUTNET = 11 ;
- QUIT = 21 ;
- LOAD = 20 ;
- INT = 23 ;
- MODE2 = 25 ;
- MODE1 = 24 ;
- REBOOTOK = 27 ;
- USERID1 = 29 ;
- USERID2 = 30 ;
- USERID3 = 31 ;
- USERID5 = 33 ;
- USERID4 = 32 ;
- USERID6 = 34 ;
- USERID7 = 35 ;
- USERID9 = 37 ;
- USERID8 = 36 ;
- USERID10 = 38 ;
- USERID11 = 39 ;
- USERID13 = 41 ;
- USERID12 = 40 ;
- USERID14 = 42 ;
- USERID15 = 43 ;
- USERID16 = 44 ;
- DRVA = 46 ;
- DRVB = 47 ;
- DRVD = 49 ;
- DRVC = 48 ;
- DRVE = 50 ;
- DRVF = 51 ;
- SEQUP = 53 ;
- S00 = 54 ;
- S10 = 55 ;
- S11 = 57 ;
- S01 = 56 ;
-
- VAR status : INTEGER;
- resourcename,nulls,on,off,netdrv : ARRAY [0..16] OF CHAR ;
- tempchar : ARRAY [0..2] OF CHAR;
- char : CHAR;
- result,handle : INTEGER ;
- done,OK : BOOLEAN;
- Cptr [0210H] : ADDRESS;
- Dptr [0214H] : DriveSet;
- Mptr [0218H] ,count : LONGCARD;
- C : POINTER TO control;
- CSAVE : POINTER TO consave;
- drvnr,i,usernumber,e : CARDINAL;
- idnumber : ARRAY [0..15] OF String;
-
-
- PROCEDURE DoAboutDialog ;
- BEGIN
- AESResources.ResourceGetAddr(GEMAESbase.RTree,ABOUT,dTree) ;
- AESForms.FormCenter(dTree,x,y,w,h) ;
- AESForms.FormDialogue(GEMAESbase.FormStart,0,0,0,0,x,y,w,h) ;
- AESForms.FormDialogue(GEMAESbase.FormGrow,0,0,0,0,x,y,w,h) ;
- ObjectDraw(dTree,0,10,x,y,w,h) ;
- result := AESForms.FormDo(dTree,-1) ;
- DeselectObject(ABOUT,ABOUTOK) ;
- AESForms.FormDialogue(GEMAESbase.FormShrink,0,0,0,0,x,y,w,h) ;
- AESForms.FormDialogue(GEMAESbase.FormFinish,0,0,0,0,x,y,w,h) ;
- END DoAboutDialog ;
-
-
- (* ------------------------------------------------------------------- *)
-
-
- PROCEDURE Events ;
- (* Handle resource events *)
- VAR
- pipeBuff : ARRAY [0..9] OF INTEGER ;
-
-
- PROCEDURE SelectMenu( Menu, Item : INTEGER ) ;
- BEGIN
-
- CASE Menu OF
- DESK : IF Item = ABOUTNET THEN
- DoAboutDialog ;
- END ; |
- FILE : CASE Item OF
- LOAD : C^.networkactive:=(NOT C^.networkactive); |
- QUIT : done := TRUE ; |
- ELSE
- END ;
- IF C^.networkactive THEN
- AESMenus.MenuText(MenuTree,LOAD,ADR(on));
- ELSE
- AESMenus.MenuText(MenuTree,LOAD,ADR(off));
- END; |
-
- MODE : CASE Item OF
- INT : Create("ANETMIDI.INT",0,handle);
- count:=TSIZE(consave);
- Write(handle,count,CSAVE);
- OK:=Close(handle); |
- REBOOTOK : CODE(03F3CH,0020H,04E41H,
- 042B9H,0,0420H,042B9H,0,043AH,
- 02079H,0,4,04ED0H) ; |
- ELSE
- END ; |
-
- USERID : CASE Item OF
- USERID1 : i:=0 ; |
- USERID2 : i:=1 ; |
- USERID3 : i:=2 ; |
- USERID4 : i:=3 ; |
- USERID5 : i:=4 ; |
- USERID6 : i:=5 ; |
- USERID7 : i:=6 ; |
- USERID8 : i:=7 ; |
- USERID9 : i:=8 ; |
- USERID10 : i:=9 ; |
- USERID11 : i:=10 ; |
- USERID12 : i:=11 ; |
- USERID13 : i:=12 ; |
- USERID14 : i:=13 ; |
- USERID15 : i:=14 ; |
- USERID16 : i:=15 ; |
- ELSE
- END ;
- AESMenus.MenuItemCheck(MenuTree,29+C^.REMOTEUSER,0);
- FOR e:=0 TO 30 DO
- IF (idnumber[0][e]=0C) OR (idnumber[0][e]= "=") THEN
- idnumber[0][e]:=0C;
- END;
- END;
- ConvertToCardinal(idnumber[0],OK,usernumber);
- IF OK THEN
- C^.USER := usernumber; (* set local id *)
- END;
- FOR e:=0 TO 30 DO
- IF (idnumber[i][e]=0C) OR (idnumber[i][e]= "=") THEN
- idnumber[i][e]:=0C;
- END;
- END;
- ConvertToCardinal(idnumber[i],OK,usernumber);
- IF OK THEN
- C^.REMOTEUSER := usernumber; (* set remote id *)
- END;
- AESMenus.MenuItemCheck(MenuTree,29+C^.REMOTEUSER,1); |
-
- SEQ : CASE Item OF
- SEQUP : C^.sendreset:= TRUE ; |
- ELSE
- END ; |
- ELSE
- END ;
- (* put header back normal*)
- AESMenus.MenuItemCheck(MenuTree,S00,0);
- AESMenus.MenuItemCheck(MenuTree,S10,0);
- AESMenus.MenuItemCheck(MenuTree,S01,0);
- AESMenus.MenuItemCheck(MenuTree,S11,0);
- IF (C^.nextframetosend[C^.REMOTEUSER]=0) AND (C^.frameexpected[C^.REMOTEUSER]=0) THEN
- AESMenus.MenuItemCheck(MenuTree,S00,1);
- END;
- IF (C^.nextframetosend[C^.REMOTEUSER]=1) AND (C^.frameexpected[C^.REMOTEUSER]=0) THEN
- AESMenus.MenuItemCheck(MenuTree,S10,1);
- END;
- IF (C^.nextframetosend[C^.REMOTEUSER]=0) AND (C^.frameexpected[C^.REMOTEUSER]=1) THEN
- AESMenus.MenuItemCheck(MenuTree,S01,1);
- END;
- IF (C^.nextframetosend[C^.REMOTEUSER]=1) AND (C^.frameexpected[C^.REMOTEUSER]=1) THEN
- AESMenus.MenuItemCheck(MenuTree,S11,1);
- END;
- AESMenus.MenuTitleNormal(MenuTree,Menu,1) ;
- END SelectMenu ;
-
- BEGIN
- GrafMouse(GEMAESbase.Arrow,NIL) ; (* put pointing mouse *)
- done := FALSE ;
- REPEAT
- AESEvents.EventMessage(ADR(pipeBuff)) ;
- CASE pipeBuff[0] OF (* message type *)
- GEMAESbase.MenuSelected : SelectMenu(pipeBuff[3],pipeBuff[4]) ; |
- GEMAESbase.WindowClosed : done := TRUE ; |
- ELSE
- END ;
- UNTIL done ;
- END Events ;
-
- (*$P- *) (* set vector to control record *)
- PROCEDURE getcontrol;
- BEGIN
- C := Cptr;
- CSAVE := Cptr;
- CODE(RTS);
- END getcontrol;
-
- BEGIN
- nulls:=" ";
- on :=" ON ";
- off:=" OFF ";
- SuperExec(PROC(getcontrol));
- IF C^.magic#3141592653 THEN
- Exec(loadExecute,"ANETMIDI.PRG",nulls,nulls,result);
- IF result<0 THEN HALT END;
- SuperExec(PROC(getcontrol));
- END;
- Open("ANETMIDI.INT",0,handle);
- IF handle>0 THEN (* if there is, load in init file *)
- count:=TSIZE(consave);
- Read(handle,count,CSAVE);
- OK:=Close(handle);
- END;
- Open("ANETMIDI.ID",0,handle);
- IF handle>0 THEN (* if there is, load in user file *)
- count:=1;
- FOR i:=0 TO 15 DO
- LOOP
- Read(handle,count,ADR(char));
- IF (char=12C) THEN EXIT END;
- IF (char=12C) OR (char=15C) THEN char:=0C END;
- tempchar[0]:=char;
- Concat(idnumber[i],tempchar,idnumber[i]);
- END;
- END;
- OK:=Close(handle);
- ELSE
- result:=AESForms.FormAlert(1,"[3][You must have a ANETMIDI.ID|in this directory!][DARN]");
- HALT;
- END;
- resourcename:=resourcefilename ;
- IF InitResource(resourcename,MENU) THEN
-
- FOR e:=29 TO 44 DO
- AESMenus.MenuText(MenuTree,e,ADR(idnumber[e-29]));
- END;
-
- AESMenus.MenuItemCheck(MenuTree,29+C^.REMOTEUSER,1);
-
- netdrv:=" DRV A = F";
- drvnr:=2;
- WHILE drvnr IN C^.drivemap DO
- INC(drvnr);
- END; (* while *)
- INC(drvnr);
- netdrv[6]:="A"; netdrv[10]:=CHAR(041H+drvnr);
- AESMenus.MenuText(MenuTree,DRVA,ADR(netdrv));
- netdrv[6]:="B"; netdrv[10]:=CHAR(041H+drvnr+1);
- AESMenus.MenuText(MenuTree,DRVB,ADR(netdrv));
- netdrv[6]:="C"; netdrv[10]:=CHAR(041H+drvnr+2);
- AESMenus.MenuText(MenuTree,DRVC,ADR(netdrv));
- netdrv[6]:="D"; netdrv[10]:=CHAR(041H+drvnr+3);
- AESMenus.MenuText(MenuTree,DRVD,ADR(netdrv));
- netdrv[6]:="E"; netdrv[10]:=CHAR(041H+drvnr+4);
- AESMenus.MenuText(MenuTree,DRVE,ADR(netdrv));
- netdrv[6]:="F"; netdrv[10]:=CHAR(041H+drvnr+5);
- AESMenus.MenuText(MenuTree,DRVF,ADR(netdrv));
-
- CASE C^.remotedrive OF (* PLACE CHECK IN REMOTE MENU *)
- 0 : AESMenus.MenuItemCheck(MenuTree,DRVA,1); |
- 1 : AESMenus.MenuItemCheck(MenuTree,DRVB,1); |
- 2 : AESMenus.MenuItemCheck(MenuTree,DRVC,1); |
- 3 : AESMenus.MenuItemCheck(MenuTree,DRVD,1); |
- 4 : AESMenus.MenuItemCheck(MenuTree,DRVE,1); |
- 5 : AESMenus.MenuItemCheck(MenuTree,DRVF,1); |
- ELSE
- END;
- IF C^.networkactive THEN
- AESMenus.MenuText(MenuTree,LOAD,ADR(on));
- ELSE
- AESMenus.MenuText(MenuTree,LOAD,ADR(off));
- END;
-
- (* AESMenus.MenuItemCheck(MenuTree,S00,0);
- AESMenus.MenuItemCheck(MenuTree,S10,0);
- AESMenus.MenuItemCheck(MenuTree,S01,0);
- AESMenus.MenuItemCheck(MenuTree,S11,0); *)
- IF (C^.nextframetosend[C^.REMOTEUSER]=0) AND (C^.frameexpected[C^.REMOTEUSER]=0) THEN
- AESMenus.MenuItemCheck(MenuTree,S00,1);
- END;
- IF (C^.nextframetosend[C^.REMOTEUSER]=1) AND (C^.frameexpected[C^.REMOTEUSER]=0) THEN
- AESMenus.MenuItemCheck(MenuTree,S10,1);
- END;
- IF (C^.nextframetosend[C^.REMOTEUSER]=0) AND (C^.frameexpected[C^.REMOTEUSER]=1) THEN
- AESMenus.MenuItemCheck(MenuTree,S01,1);
- END;
- IF (C^.nextframetosend[C^.REMOTEUSER]=1) AND (C^.frameexpected[C^.REMOTEUSER]=1) THEN
- AESMenus.MenuItemCheck(MenuTree,S11,1);
- END;
- Events ;
- END;
- Terminate ;
- END Control.